Cacti is a robust performance and fault management framework and a frontend to RRDTool - a Time Series Database (TSDB). It stores all of the necessary information to create performance management Graphs in either MariaDB or MySQL, and then leverages its various Data Collectors to populate RRDTool based TSDB with that performance data.
Cacti is also a LAMP stack Web Application. The term LAMP originally stood for Linux, Apache, MySQL and PHP but through the years the term has evolved. Cacti is now also supported on Windows, it can use Nginx or IIS as its Web Server, and MariaDB is now the default database on many Linux platforms. The key concept of the LAMP stack continues to be consistent. Structural data is stored in the relational database, Time Series data is stored in RRDTool's Round Robin Archives (RRA), and the Web Site is ultimately driven by PHP.
At the center of Cacti and its database are the Device and Device Template. You first create Devices that have certain attributes associated with them such as a Device Template, SNMP community, and other meta information such as Site, Location, and GPS location. From from that information, Cacti will create Graphs and Data Sources appropriate for the Device. These Graphs can then be placed upon Trees that are allow for a very organized and flexible layout which allows users to drill into their organizations operational ecosystem.
When Ian Berry first created Cacti in 2001 it was never intended to go beyond performance management. Through the years a select community of Plugin developers have extended Cacti to become a fairly comprehensive operational management framework covering other areas of operations management. In 2021 through the use of these Plugins Cacti can be used not only as a performance management tool, but can be used for: fault management, log management, device discovery, router configuration backup, network mapping, NetFlow data collection and display, etc. Through the use of its Plugin architecture Cacti can and has been extended well beyond its original intent.
Cacti can scale from just a few to 10's of thousands of hosts. Its Data Collection framework is fully distributed and fault tolerant. Its core services can be deployed behind load balancers with session management coming from its database, and its structural database deployed as well in a fully fault tolerant way. The RRDTool TSDB can be distributed using technologies such as GlusterFS, the RRDProxy and GPFS as well. There is literally no component in the modern Cacti that can not be made fault tolerant.
To understand how Cacti operates, it is important to understand a few key features first. They include:
Devices are at the center of the Cacti database. Devices are associated with Device Templates, which Cacti then uses to automatically create performance management Graphs and Data Sources. Device support in Cacti is biased heavily towards SNMP enabled hosts, but Cacti can use just about any Data Collection methodology to create performance Graphs and Data Sources.
Data Sources store information about the composition of RRDTools Round Robin Archives (RRAs). Round Robin Archives are small Time Series Databases that store and aggregate information about data inserted into them by Cacti's Data Collectors. That data can come from SNMP enabled hosts, or from external scripts/commands that are executed by Cacti's Data Collectors. Due to the fact the Cacti supports gathering data from any external script or command, makes Cacti a very versatile performance management framework.
Data Sources can also be created, which correspond to actual data on the Graph. For instance, if a user would want to Graph the ping times to a host, you could create a Data Source utilizing a script that pings a host and returns its value in milliseconds. After defining options for RRDTool such as how to store the data you will be able to define any additional information that the data input source requires, such as a host to ping in this case. Once a data source is created, it is automatically maintained at a Data Collection interval which Cacti refers to as a Polling Interval.
Once one or more Data Sources are defined and Cacti's Data Collectors start to store that data in Round Robin Archives, the data can then be used to render Graphs in Cacti. By default, Cacti uses the built in Graphing function provided by RRDTool, but the data in RRDTools TSDB can also be consumed by other visualization tools.
Cacti can create any imaginable RRDTool graph using all of the standard RRDTool graph types and consolidation functions. A color selection area and automatic text padding function also aid in the creation of graphs to make the process easier.
Not only can you create RRDTool based graphs in cacti, but there are many ways to display them. Along with a standard "list view" and a "preview mode", which resembles the RRDTool frontend 14all, there is a "tree view", which allows you to put graphs onto a hierarchical tree for organizational purposes.
Cacti is able to easily scale to a large number of Data Sources and Graphs through the use of Templates and Packages. Device Templates allow Cacti administrators to associated Devices of a certain type or class to a collection of Graphs that that host associated with the Device Template supports. All of Cacti's Templates can be exported from one Cacti installation and then imported on another either as Template files, or more recently Package files.
Remote Data Collectors are small Cacti installs that allow you to move Cacti's Data Collection closer to the Devices they are monitoring. They are connected to the core Cacti database through https and MySQL/MariaDB data connections, and will continue to operate even when the connection to the core Cacti system is unavailable. In cases where the core Cacti database is not reachable they will cache their data and then push updates to the core Cacti database once it returns online.
Cacti includes a built-in distributed scheduler that allows the creation of from one to many discovery rules to scan a network or networks for new Devices and automatically add them to Cacti. When these Devices are added to Cacti, they can be automatically associated with a Device Template, be associated with a Site or location, have all their relevant Graphs created, and be placed onto Trees for viewing by operations personnel. These Automation rules can be rerun periodically updating existing devices within those networks with new Graphs throughout their lifecycle as well.
Cacti provides three Authentication and Authorization methodologies to provide access to its features. It supports Local, LDAP, and Basic Authentication such as SAML2, TACCS+, etc. to verify a users identity, and then once a user is authenticated, Cacti uses a hybrid Role/Realm based authorization system to grant them access to its various components. In addition, Cacti supports the creation of User Groups and Domains to simplify overall user administration. In addition, Cacti supports "Remember Me" session management that allows users to remain logged in for extended periods of time on trusted computers.
When using both LDAP and Basic authentication Cacti will not store any user credentials either in its database, or in memory making the leakage of sensitive private data very limited. When using Local users in Cacti, it stores and periodically rehashes user passwords using PHP's built in strong password management libraries further reducing potential private data exposure.
Though as a stand alone tool, Cacti is very robust, it can be extended to perform other functions through the use of its Plugin Architecture. Originally derived from the Squirrel Mail tools plugin architecture, Cacti's Plugin Architecture has provided Cacti users around the world the ability to tailor their Cacti user experience for their intended audiences. The Cacti Group provides almost two dozen Plugins that extend Cacti beyond its original boundaries via GitHub, and others have provided Cacti plugins that allow enterprises to monitor tens of thousands of devices from the single pane of glass that Cacti provides.
Cacti allows to the personification and branding of its user interface. It provides 6 standard themes out of the box including the 'Classic' Cacti theme. These standard themes can then be modified by Cacti users to create their own user front end. Since Cacti is completely CSS driven, using jQueryUI as its core user experience platform it can easily tailored to the users needs.
Cacti has also been translated into multiple languages. If you wish to contribute to a translation of Cacti, goto https://translate.cacti.net.